package com.example.demo.config;

/**
 * Description:
 * User: 故我
 * Date: 2023-11-08
 * Time: 20:44
 */

import com.example.demo.common.ApplicationVal;
import com.example.demo.entity.UserInfo;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * 实现一个普通的普通的拦截器，实现preHandle方法，并添加到全局配置文件中
 */
public class LoginInterceptor implements HandlerInterceptor {
    /**
     * 返回值为 true 表示当前用户已经登录，
     * false表示用户未登录，跳转到登录页面
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession(false);//不创建
        if (session != null && session.getAttribute(ApplicationVal.USER_SESSION_KEY) != null) {
            System.out.println("当前登录的用户为: " +
                    ((UserInfo) session.getAttribute(ApplicationVal.USER_SESSION_KEY)).getUsername());
            //说明该用户是曾经登录过的
            return true;
        } else {
            //当前用户未登录
            response.sendRedirect("/blog_login.html");
            return false;
        }
    }
}
